#include <stdio.h>
#include <stdlib.h>
#include "Snake.h"



/**
 * \fn void snake1Init(Snake *pSnake)
 * \brief Initialise le premier snake avec la bonne position, la bonne vitesse et le bon sens de déplacement
 * \param [in,out] pSnake Snake que l'on initialise
 */

void snake1Init(Snake *pSnake)
{
	pSnake->x = 1;
	pSnake->y = 1;
	pSnake->vitesse=1;
	pSnake->compteur=0;
	pSnake->sens = 1; /*0 = gauche, 1 = droite, 2 = haut, 3 = bas (voir enum dans snake.h) */
}



/**
 * \fn void snake2Init(Snake *pSnake)
 * \brief Initialise le deuxième snake avec la bonne position, la bonne vitesse et le bon sens de déplacement
 * \param [in,out] pSnake Snake que l'on initialise
 */

void snake2Init(Snake *pSnake)
{
	pSnake->x = 38;
	pSnake->y = 28;
	pSnake->vitesse=1;
	pSnake->compteur=0;
	pSnake->sens = 0;
}


/**
 * \fn void snakeGauche(Snake *pSnake, const Terrain *pTer)
 * \brief fonction pour faire le déplacement du snake vers la gauche
 * \param [in,out] pSnake Snake que l'on déplace vers la gauche
 * \param [in] pTer Terrain sur lequel on déplace le snake
 */

void snakeGauche(Snake *pSnake, const Terrain *pTer)
{
        pSnake->sens=0;
}


/**
 * \fn void snakeDroite(Snake *pSnake, const Terrain *pTer)
 * \brief fonction pour faire le déplacement du snake vers la droite
 * \param [in,out] pSnake Snake que l'on déplace vers la droite
 * \param [in] pTer Terrain sur lequel on déplace le snake
 */

void snakeDroite(Snake *pSnake, const Terrain *pTer)
{
        pSnake->sens=1;
}



/**
 * \fn void snakeHaut(Snake *pSnake, const Terrain *pTer)
 * \brief fonction pour faire le déplacement du snake vers le haut
 * \param [in,out] pSnake Snake que l'on déplace vers le haut
 * \param [in] pTer Terrain sur lequel on déplace le snake
 */

void snakeHaut(Snake *pSnake, const Terrain *pTer)
{
        pSnake->sens=2;
}


/**
 * \fn void snakeBas(Snake *pSnake, const Terrain *pTer)
 * \brief fonction pour faire le déplacement du snake vers le bas
 * \param [in,out] pSnake Snake que l'on déplace vers le bas
 * \param [in] pTer Terrain sur lequel on déplace le snake
 */

void snakeBas(Snake *pSnake, const Terrain *pTer)
{
        pSnake->sens=3;
}




/**
 * \fn void snakeGetX(Snake *pSnake)
 * \brief Récupère l'abscisse x de la position du snake passé en paramètre
 * \param [in,out] pSnake Snake dont on récupère l'abscisse
 */

int snakeGetX(const Snake *pSnake)
{
	return pSnake->x;
}




/**
 * \fn void snakeGetY(Snake *pSnake)
 * \brief Récupère l'ordonnée y de la position du snake passé en paramètre
 * \param [in,out] pSnake Snake dont on récupère l'ordonnée
 */

int snakeGetY(const Snake *pSnake)
{
	return pSnake->y;
}


